#include "stdafx.h"
#include "LGProto.h"
#include "Session.h"

void DecodeLOGIN_REQ(const void * buf, int nSize, CSession * pProc)
{
    PKG_LOGIN_REQ pkg;
    if (!pkg.ParseFromArray(buf, nSize))
        return;
    if (pProc){
        pProc->LoginReq(&pkg);
    }
}

CLGProto::CLGProto()
{
    memset(m_DecodeFuncArray, 0, sizeof(m_DecodeFuncArray));
    Init();
}

CLGProto::~CLGProto()
{
}

bool CLGProto::Init()
{
    m_DecodeFuncArray[LOGIN_REQ] = &DecodeLOGIN_REQ;
    return true;
}

void CLGProto::Decode(int nMsgID, const void * buf, int nSize, CSession * pProc)
{
    if(nMsgID > LGProtoMaxMessageID || m_DecodeFuncArray[nMsgID] == NULL){
        return;
    }
    m_DecodeFuncArray[nMsgID](buf, nSize, pProc);
}

